Hallo,
ich versuche Momentan ein Programm zu schreiben welches Anhand von einer vorgegebenen Energieerzeugung (PV) und einem vorgegebenen Lastgang (Last) das Laden einer Batterie zu simulieren.
Hierbei werde die werte für den Strombezug von der Energiequelle (EV), die Einspeisung in das Netz (Einspeise), der Bezug aus dem Netz (Bezug) und dem Speicherstand (Speicher) errechnet. Der Speicherstand wird zu beginn auf 0 gesetz und durch eine Eingabe über eine TextBox begrenzt.
Ohne die Verwendung eines Speichers Funktioniert das Programm, aber sofern ich einen Wert für Speicher eintrage, sind erhebliche Fehler in der Berechnung vorhanden...
Vielleicht kann mir jemand einen Tipp geben, wie ich die Berechnung sauberer ausfüren kann...
For i = 1 To 35041
Überschuss(i, 1) = CDbl(PV(i, 1)) - CDbl(Last(i, 1))
If i = 1 Then
'Wenn mehr Last als Erzeugung
If CDbl(Überschuss(i, 1)) < 0 Then
Überschuss(i, 1) = CDbl(Überschuss(i, 1) * (-1))
EV(i, 1) = CDbl(PV(i, 1))
If CDbl(Überschuss(i, 1)) >= CDbl(0) Then
Überschuss(i, 1) = CDbl(Überschuss(i, 1)) - CDbl(Speicher(i, 1))
Bezug(i, 1) = CDbl(Überschuss(i, 1)) - CDbl(Speicher(i, 1))
Speicher(i, 1) = CDbl(0)
Else
Speicher(i, 1) = CDbl(0) - CDbl(Überschuss(i, 1))
Überschuss(i, 1) = CDbl(0)
End If
Einspeise(i, 1) = CDbl(0)
'Wenn mehr Erzeugung als Last
Else
Bezug(i, 1) = CDbl(0)
If CDbl(Überschuss(i, 1)) <= CDbl(Max) Then
Speicher(i, 1) = CDbl(Speicher(i, 1)) + CDbl(Überschuss(i, 1))
EV(i, 1) = CDbl(Last(i, 1)) + CDbl(Überschuss(i, 1))
Einspeise(i, 1) = CDbl(0)
Else
Platz = CDbl(Max) - CDbl(0)
Speicher(i, 1) = CDbl(Max)
EV(i, 1) = CDbl(Last(i, 1))
Einspeise(i, 1) = CDbl(Überschuss(i, 1)) - CDbl(Platz)
End If
End If
Else
'Wenn mehr Last als Erzeugung
If CDbl(Überschuss(i, 1)) < 0 Then
Überschuss(i, 1) = CDbl(Überschuss(i, 1) * (-1))
EV(i, 1) = CDbl(PV(i, 1))
If CDbl(Überschuss(i, 1)) >= CDbl(Speicher(i - 1, 1)) Then
Überschuss(i, 1) = CDbl(Überschuss(i, 1)) - CDbl(Speicher(i - 1, 1))
'Geändert von Überschuss auf Last
Bezug(i, 1) = CDbl(Last(i, 1) - PV(i, 1)) - CDbl(Speicher(i - 1, 1))
Speicher(i, 1) = CDbl(Speicher(i - 1, 1)) - CDbl(Speicher(i - 1, 1))
Else
Speicher(i, 1) = CDbl(Speicher(i - 1, 1)) - CDbl(Überschuss(i, 1))
Überschuss(i, 1) = CDbl(0)
End If
Einspeise(i, 1) = CDbl(0)
'Wenn mehr Erzeugung als Last
Else
Bezug(i, 1) = CDbl(0)
If CDbl(Überschuss(i, 1)) <= CDbl(Max) - CDbl(Speicher(i - 1, 1)) Then
Speicher(i, 1) = CDbl(Speicher(i - 1, 1)) + CDbl(Überschuss(i, 1))
EV(i, 1) = CDbl(Last(i, 1)) + CDbl(Überschuss(i, 1))
Einspeise(i, 1) = CDbl(0)
Else
Platz = CDbl(Max) - CDbl(Speicher(i - 1, 1))
Speicher(i, 1) = CDbl(Max)
EV(i, 1) = CDbl(Last(i, 1))
Einspeise(i, 1) = CDbl(Überschuss(i, 1)) - CDbl(Platz)
End If
End If
End If
Next i
|